#Kiwi Editor is a framework for building WYSIWYG web editors.
#Copyright (C) 2011  Roosevelt de Lima Sardinha

#This program is free software; you can redistribute it and/or
#modify it under the terms of the GNU General Public License
#as published by the Free Software Foundation; either version 2
#of the License, or (at your option) any later version.

#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.

#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

#Contact the author at roosevelt1@gmail.com (Roosevelt) 


class DocumentsController < ApplicationController 
  def create
    # Getting parameters
    json_str = params[:json]

    as_json = ActiveSupport::JSON
       
    json = as_json.decode(json_str)
    
    document = Document.new
    document.update_with_json(json)
    
    # Response
    respond_to do |format|
      format.js  { render :json => document.id ? document.id : false}
    end
  end
  
  def destroy
    document = Document.find(params[:id])
    Document.destroy(document)
    
    # Response
    respond_to do |format|
      format.js  { render :json => true}
    end
  end
  
  def update
    # Getting parameters
    json_str = params[:json]
    as_json = ActiveSupport::JSON
    
    json = as_json.decode(json_str)
    
    document = Document.find(params[:id])
    document.update_with_json(json)
    
    # Response
    respond_to do |format|
      format.js  { render :json => true}
    end
  end
  
  def index
    documents = Document.all
    all_documents_array = []
    documents_hash = {}
    
    documents.each do |doc|
      all_documents_array << doc.to_hash 
    end
    
    documents_hash["documents"] = all_documents_array
    
    respond_to do |format|
      format.js  { render :json => documents_hash}
      format.xml  { render :xml => documents_hash}
    end
  end
  
  def get         
    document = Document.find(params[:id])   
    respond_to do |format|
      format.js  { render :json => document.to_hash}
      format.xml  { render :xml => document.to_hash}
    end
  end
  
  def exists?
    document = Document.find_by_id(params[:id])    
    respond_to do |format|
      format.js  { render :json => document.nil? ? false : true}
    end
  end
end

# JSON format expected for a document
# {
#  name: teste,
#  description: teste,
#  eos: [{
#    {
#      type: textboxEO,
#      properties: {
#        width: 10px,
#        height: 10px            
#      }
#    },
#    {
#      type: checkboxEO,
#      properties: {
#        width: 20px,
#        height: 20px            
#      }
#    }
#  }]
#}

